package br.eng.eliseu.gwt.gestaoWeb.server.atualizacao.util;


import java.io.Serializable;
import java.util.List;

public class Tabela implements Serializable {
	private static final long serialVersionUID = 2083738565885535496L;

	private Integer tabela;
	private String nome;
	private Integer versao;
	private Integer versaoDB;
	private String tableSpace;
	private String sequenceGenerator;
	private Integer colunaPK;

	private List<Coluna> colunas;
	private List<Indice> indices;
	private List<Chave> chaves;

	public final static Integer TIPO_SMALLINT = 1;
	public final static Integer TIPO_INTEGER = 2;
	public final static Integer TIPO_DECIMAL = 3;
	public final static Integer TIPO_DATE = 4;
	public final static Integer TIPO_CHAR = 5;
	public final static Integer TIPO_VARCHAR2 = 6;
	public final static Integer TIPO_BLOB = 7;
	public final static Integer TIPO_CLOB = 8;
	public final static Integer TIPO_LONG = 9;
	public final static Integer TIPO_VARBINARY = 10;
	public final static Integer TIPO_AUTOINCREMENT = 11;
	public final static Integer TIPO_BLOBJAVA = 12;

	static public String getTipoColuna(Coluna coluna) {
		if (coluna.getTipo().equals(TIPO_SMALLINT)) {
			return " Smallint ";
		} else if (coluna.getTipo().equals(TIPO_INTEGER)) {
			return " Integer ";
		} else if (coluna.getTipo().equals(TIPO_DECIMAL)) {
			return " Decimal(" + coluna.getTamanho() + ", "
					+ coluna.getDecimais() + ")";
		} else if (coluna.getTipo().equals(TIPO_DATE)) {
			return " Date ";
		} else if (coluna.getTipo().equals(TIPO_CHAR)) {
			return " Char(" + coluna.getTamanho() + ")";
		} else if (coluna.getTipo().equals(TIPO_VARCHAR2)) {
			return " Varchar2(" + coluna.getTamanho() + ")";
		} else if (coluna.getTipo().equals(TIPO_BLOB)) {
			return " Long raw ";
		} else if (coluna.getTipo().equals(TIPO_CLOB)) {
			return " Clob ";
		} else if (coluna.getTipo().equals(TIPO_LONG)) {
			return " Long ";
		} else if (coluna.getTipo().equals(TIPO_VARBINARY)) {
			return " Varbinary( MAX ) ";
		} else if (coluna.getTipo().equals(TIPO_AUTOINCREMENT)) {
			return " Integer ";
		} else if (coluna.getTipo().equals(TIPO_BLOBJAVA)) {
			return " Blob ";
		} else {
			return "";
		}
	}
	public static String getIndiceColuna(List<Coluna> listaColunas,
			IndiceColuna indColuna) {
		String texto = "";
		for (Coluna coluna : listaColunas) {
			if (coluna.getColuna().equals(indColuna.getColuna())) {
				texto = coluna.getNome();
				if (indColuna.getOrdem() == 1) {
					texto += " asc ";
				} else {
					texto += " desc ";
				}
				break;
			}
		}
		return texto;
	}
	
	public Integer getTabela() {
		return tabela;
	}
	public void setTabela(Integer tabela) {
		this.tabela = tabela;
	}
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public Integer getVersao() {
		return versao;
	}
	public void setVersao(Integer versao) {
		this.versao = versao;
	}
	public Integer getVersaoDB() {
		return versaoDB;
	}
	public void setVersaoDB(Integer versaoDB) {
		this.versaoDB = versaoDB;
	}
	public String getTableSpace() {
		return tableSpace;
	}
	public void setTableSpace(String tableSpace) {
		this.tableSpace = tableSpace;
	}
	public String getSequenceGenerator() {
		return sequenceGenerator;
	}
	public void setSequenceGenerator(String sequenceGenerator) {
		this.sequenceGenerator = sequenceGenerator;
	}
	public void setColunas(List<Coluna> colunas) {
		this.colunas = colunas;
	}
	public List<Coluna> getColunas() {
		return colunas;
	}
	public void setIndices(List<Indice> indices) {
		this.indices = indices;
	}
	public List<Indice> getIndices() {
		return indices;
	}
	public void setColunaPK(Integer colunaPK) {
		this.colunaPK = colunaPK;
	}
	public Integer getColunaPK() {
		return colunaPK;
	}
	public void setChaves(List<Chave> chaves) {
		this.chaves = chaves;
	}
	public List<Chave> getChaves() {
		return chaves;
	}
}